<?php

namespace Sbm\ControlPanel;

use Sbm;

/**
 * @var Master
 */
$data = new Sbm\Master();


$id = empty($_GET['id']) ? NULL : $_GET['id'];
$todo = empty($_POST['todo']) ? 'edit-this' : $_POST['todo'];
$save_new = empty($_POST['save-new']) ? false : true;

///{{{ Если передан id - получаем объект
if ( $id )
{
	$s = "SELECT * FROM `{master}` WHERE `id`='" . $id . "'";
	$q = $db->Query($s);
	if ( $r = $q->FetchRow() )
	{
		$data = new Sbm\Master($r);

		// Заполняем связи Master со списком Profession
		$master_profession = array();
		$s = "SELECT * FROM `{master_profession}` WHERE `master_id`='" . $id . "'";
		$q = $db->Query($s);
		while ($r = $q->FetchRow())
		{
			$data->professions[] = $r['profession_id'];
		}

		// Заполняем связи Master со списком Region
		$master_region = array();
		$s = "SELECT * FROM `{master_region}` WHERE `master_id`='" . $id . "'";
		$q = $db->Query($s);
		while ($r = $q->FetchRow())
		{
			$data->regions[] = $r['region_id'];
		}
	}
}
//}}}
//{{{ получаем список всех профессий

$profession_list = array();

$s = "SELECT * FROM `{profession}` ORDER BY `title` ASC";
$q = $db->Query($s);
while ($r = $q->FetchRow())
{
	$profession = new Sbm\Profession($r);
	$profession_list[] = $profession;
}

//}}}
//{{{ получаем список всех регионов

$region_list = array();

$s = "SELECT * FROM `{region}` ORDER BY `title` ASC";
$q = $db->Query($s);
while ($r = $q->FetchRow())
{
	$region = new Sbm\Region($r);
	$region_list[] = $region;
}

//}}}
//{{{ Заполняем 

$professions = $data->professions;
$regions = $data->regions;

//}}}


if ( sizeof($_POST) )   //если переменная не пустая, выполнить проверки:
{
	$data->name = $_POST['name'];
	$data->phone = $_POST['phone'];
	$data->SetBalance($_POST['balance']);
	$data->description = $_POST['description'];
	$data->status = $_POST['status'];

	//{{{ Связи мастера со специальностями
	// список специальностей из формы
	$professions = ( isset($_POST['professions']) && is_array($_POST['professions']) ) ? $_POST['professions'] : array();

	//}}}
	//{{{ Связи мастера с регионами
	// список регионов специальностей из формы 
	$regions = ( isset($_POST['regions']) && is_array($_POST['regions']) ) ? $_POST['regions'] : array();

	//}}}
	//{{{ проверяем входные параметры

	$errors = array();
	$phone_validators = array(
		"\+?\d?\-\d{3}-\d{3}-\d{4}",
		"\+?\d{10,11}",
		"\+?\d{11}",
		"\d{6}",
		"\d{2}\-\d{2}\-\d{2}"
	);
	if ( !preg_match("/^(" . implode(")|(", $phone_validators) . ")$/", $data->phone) )
	{
		$errors[] = "Неправильно указан номер телефона";
	}

	if ( !preg_match("/\w{3,}/ui", $data->name) )
	{
		$errors[] = "Неправильно введено ФИО";
	}

	//}}}
	// если ошибок не обнаружено
	if ( !$errors )
	{
		// проверяем нужно-ли сохранить элемент как новый
		if ( $save_new )
		{
			$data->id = NULL;
		}

		// заполняем список профессий в объекте 
		$data->SetProfessions(is_array($professions) ? $professions : array() );

		// заполняем список регионов в объекте
		$data->SetRegions(is_array($regions) ? $regions : array() );

		// сохраняем элемент
		$id = $data->Save($db);

		// обновляем список специальностей в базе
		$data->SaveProfessions($db);

		// обновляем список специальностей в базе
		$data->SaveRegions($db);

		$layout->SetMessage('Мастер сохранён');

		// в зависимости от выбранного модератором 'todo' делаем редирект 
		switch ($todo)
		{
			case 'edit-this':
				header("Location: ./?mod=" . $mod . "&act=edit&id=" . $id);
				break;
			case 'main-page':
				header("Location: ./");
				break;
			case 'list':
			default:
				header("Location: ./?mod=" . $mod);
				break;
		}
		exit();
	}
	else
	{
		$layout->SetErrors($errors);
	}
}
?>